/**
 * 加法运算子类
 */
public class AdditionOperation2 extends BinaryOperation2 {
    // 静态方法用于计算调整后的右操作数
    private static int calculateAdjustedRight(int leftOperand, int rightOperand) {
        int adjLeft = Math.max(0, leftOperand);
        int adjRight = Math.max(0, rightOperand);
        if (adjLeft + adjRight > 100) {
            return 100 - adjLeft;
        }
        return adjRight;
    }
    
    // 静态方法用于生成随机加法操作数
    private static int[] generateRandomAdditionOperands() {
        int left = (int) (Math.random() * 101); // 0-100的随机左操作数
        int right = (int) (Math.random() * (101 - left)); // 右操作数确保和不超过100
        return new int[] {left, right};
    }
    
    public AdditionOperation2() {
        // super调用必须是第一个语句
        int[] operands = generateRandomAdditionOperands();
        super(
            operands[0], // 左操作数
            operands[1], // 右操作数
            '+'
        );
    }

    public AdditionOperation2(int leftOperand, int rightOperand) {
        // super调用必须是第一个语句
        super(
            Math.max(0, leftOperand), // 确保左操作数非负
            calculateAdjustedRight(leftOperand, rightOperand), // 计算调整后的右操作数
            '+'
        );
    }

    @Override
    protected int calculate() {
        return leftOperand + rightOperand;
    }

    @Override
    public boolean checkingCalculation() {
        return getValue() == leftOperand + rightOperand;
    }
}